#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QDebug>

// 使用lambda表达式定义槽函数

// lambda表达式本质上是一个“匿名函数” ，主要应用在“回调函数”中 ， 一次性使用
// lambda是一个回调函数 这个函数，无法直接获取上层作用域中的变量
// 为解决该问题 引入了“变量捕获”语法 ，通过变量捕获 获取到外层作用域中的变量
// 使用该表达式要注意 生命周期

// lambda 除了可以按照值的方式[=]来捕获变量，
// 还可以通过引用的方式[&]来捕获连变量，捕获的一般是和各种控件的指针 使用引用捕获要更加关注变量的生命周期


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QPushButton* button = new QPushButton("按钮" , this);
    button->move(200 , 200);


    connect(button , &QPushButton::clicked , this , [=](){
        qDebug() << "lambda表达式定义槽函数";
        button->move(300 , 300);
        this->setWindowTitle("窗口");
    });
}

Widget::~Widget()
{
    delete ui;
}
